package com.vhall.component.plugin.common.support;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.framework.common.annotation.ParamName;
import com.vhall.component.plugin.common.vo.MultipleRoleVO;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * token实体
 *
 * @author longzhen.gong
 * @date 2021/6/21 10:50
 */
@Data
public class Token implements Serializable {

    /**
     * accountId 有值就查询 account 表
     */
    @JsonProperty("accountId")
    private Integer accountId;

    @JsonProperty("accountType")
    private Integer accountType;

    @JsonProperty("appId")
    private String appId;

    @JsonProperty("modules")
    private List<String> modules;

    @JsonProperty("nickname")
    private String nickname;

    @JsonProperty("phone")
    private String phone;

    @JsonProperty("status")
    private Integer status;

    @JsonProperty("third_party_user_id")
    private String thirdPartyUserId;

    @JsonProperty("token")
    private String token;

    @JsonProperty("username")
    private String username;

    @JsonProperty("profile_photo")
    private String profilePhoto;

    private Integer aType;
    /**
     * 用户角色 id
     */
    @JsonProperty("role_id")
    private Integer roleId;
    /**
     * 权限类型
     * 类型 1:平台级,2:部门级
     */
    @JsonProperty("role_type")
    private Integer roleType;
    /**
     * 用户所属区域组织架构
     */
    @JsonProperty("org_code")
    @ParamName("org_code")
    private String orgCode;

    @JsonProperty("org_name")
    @ParamName("org_name")
    private String orgName;
    /**
     * 客户号
     * 拥有客户号证明绑定过账户
     */
    @JsonProperty("cust_id")
    @ParamName("cust_id")
    private String custId;
    /**
     * 资金账号
     * 拥有资金号证明进行了交易登录
     */
    @JsonProperty("fund_id")
    @ParamName("fund_id")
    private String fundId;

    /**
     * 总部标记位
     * true 是总部
     * false 不是总部
     */
    @JsonProperty("headquarters_marker_flag")
    @ParamName("headquarters_marker_flag")
    private Boolean headquartersMarkerFlag;

    /**
     * 账号类型
     * 1 游客
     * 2 注册用户
     * 3 交易登录
     * 4 绑定账户用户
     * {@link  com.vhall.component.entity.dictionary.enums.GuoXinAccountTypeEnum}
     */
    @JsonProperty("guo_xin_account_type")
    private Integer guoXinAccountType;
    /**
     * 是否为国信员工
     * 0：非员工 1：员工
     */
    @JsonProperty("staff")
    @ParamName("staff")
    private Integer staff;
    /**
     * 进入渠道
     * jty-金太阳
     * wx-微信
     * xcx-小程序
     */
    private String channel;

    /**
     * 用户角色标识
     * roleName=3  代表 嘉宾  roleName=4  代表助理
     */
    @JsonProperty(value = "role_name")
    @ParamName("role_name")
    private Integer roleName;

    /**
     * 当前用户可以选择的权限列表
     */
    @JsonProperty("role_list")
    @ParamName("role_list")
    List<MultipleRoleVO> roleList;
}
